package com.cy.store.mapper;

import com.cy.store.entity.Address;
import org.apache.ibatis.annotations.Param;

import javax.xml.crypto.Data;
import java.util.Date;
import java.util.List;

/**
 * 收货地址持久层的接口
 */
public interface AddressMapper {
    /**
     * 插入用户的收货地址数据
     * @param address 收货地址数据
     * @return 受影响的行数
     */
    Integer insert(Address address);

    /**
     * 根据用户的uid统计收货地址数量
     * @param uid 用户的uid
     * @return 当前用户的收货地址总数（一个账号可以有多个收货地址）
     */
    Integer countByUid(Integer uid);


    /**
     * 根据用户的id查询用户的收货地址数据
     * @param uid
     * @return 收货地址的集合
     */
    List<Address> findByUid(Integer uid);

    /**
     * 根据aid查询地址数据
     * @param aid
     * @return
     */
    Address findByAid(Integer aid);

    /**
     * 根据Uid修改收货地址为非默认
     * @param uid
     * @return 受到影响的行数
     */
    Integer updataNonDefault(Integer uid);

    /**
     * 设置默认地址
     * @param aid
     * @param modifiedUser 采用@Param，进行sql语句的重映射
     * @param modifiedTime
     * @return
     */
    Integer updataDefaultByAid(@Param("aid1") Integer aid, @Param("modifiedUser1") String modifiedUser, @Param("modifiedTime1") Date modifiedTime);

    /**
     * 根据aid删除收货地址
     * @param aid
     * @return 受到影响的行数
     */
    Integer deleteByAid(Integer aid);

    /**
     * 根据uid查询用户最后修改的地址数据(address --> 一条数据）
     * @param uid
     * @return
     */
    Address findLastModified(Integer uid);

    /**
     * 获取用户默认的地址数据
     */
    Address getIsDefaultAddress(Integer uid);
}
